package com.sisgesbyte.services.proyeccion;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstModAdministracion;
import com.sisgesbyte.common.ConstProyeccion;
import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.administracion.MantCategoriaProductoDao;
import com.sisgesbyte.dao.administracion.MantenimientoMarcaDao;
import com.sisgesbyte.dao.beanDao.FiltrosBean;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.dao.beanDao.ProyeccionClienteResponse;
import com.sisgesbyte.dao.proyeccion.MantProyeccionClienteDao;
import com.sisgesbyte.data.entity.administracion.CategoriaProductoEntity;
import com.sisgesbyte.data.entity.administracion.MarcaEntity;
import com.sisgesbyte.data.entity.comun.GenericEntity;
import com.sisgesbyte.data.entity.comun.GenericResponseEntity;
import com.sisgesbyte.data.entity.proyeccion.ProyeccionClienteEntity;
import com.sisgesbyte.services.commonBean.GenericGuardarResponse;
import com.sisgesbyte.services.commonBean.GenericResponse;
import com.sisgesbyte.services.proyeccion.bean.FiltroProyClienteBean;
import com.sisgesbyte.services.proyeccion.bean.ListaProyCanalCategoriaResponse;
import com.sisgesbyte.services.proyeccion.bean.ListaProyCanalMarcasResponse;
import com.sisgesbyte.services.proyeccion.bean.ListaProyeccionClienteBean;
import com.sisgesbyte.services.proyeccion.bean.ListaProyeccionClienteDetalleBean;
import com.sisgesbyte.services.proyeccion.bean.ListaProyeccionClienteDetalleResponse;
import com.sisgesbyte.services.proyeccion.bean.ListaProyeccionClienteResponse;
import com.sisgesbyte.services.proyeccion.bean.ProyGeneralCategoriaBean;
import com.sisgesbyte.services.proyeccion.bean.ProyeccionGeneralMarcasBean;
import com.sisgesbyte.services.ventas.MantVendedorClienteService;
import com.sisgesbyte.services.ventas.bean.FiltroVendedoClienteFO;
import com.sisgesbyte.services.ventas.bean.ListaVendedorClienteResponse;
import com.sisgesbyte.services.ventas.bean.VendedorClienteBean;

@Stateless
public class MantProyeccionClienteServiceImpl implements
		MantProyeccionClienteService {

	@EJB
	private MantProyeccionClienteDao mantProyeccionClienteDao;
	@EJB
	private MantProyeccionClienteDetalleService mantProyeccionClienteDetalleService;
	@EJB
	private MantVendedorClienteService mantVendedorClienteService;
	@EJB
	private MantenimientoMarcaDao mantenimientoMarcaDao;
	@EJB
	private MantCategoriaProductoDao mantCategoriaProductoDao;
	@Inject
	private Validaciones validaciones;
	private List<CategoriaProductoEntity> listaHijosCategoriaProd;
	private List<CategoriaProductoEntity> hijos;
	
	@Override
	public ListaProyeccionClienteResponse mostrarProyeccionCLiente(
			String codTransaccion, FiltroProyClienteBean filtroOpciones) {
		String mensajeTransaccionMetodo = "[mostrarProyeccionCLiente idTx=" + codTransaccion + "] - ";
		ListaProyeccionClienteResponse response = new ListaProyeccionClienteResponse();
		
		ListaVendedorClienteResponse listaClientesxVendedor = null;
		if(filtroOpciones.getIdFFVV() > 0){
			FiltroVendedoClienteFO filtroBean = new FiltroVendedoClienteFO();
			filtroBean.setActive(true);
			filtroBean.setIdFfvv(filtroOpciones.getIdFFVV());;
			try{
				//obtenemos la lista de clientes por vendedor, aqui te trae la lista de cliente incluido los de los vendedores a su cargo
				listaClientesxVendedor = mantVendedorClienteService.listaVendedorCliente(codTransaccion, filtroBean);
				if(!listaClientesxVendedor.getCodigoRespuesta().equalsIgnoreCase(ConstantesInternasSistema.CODIGO_EXITO)){
					System.out.println(mensajeTransaccionMetodo + "Hubo un error al tratar de traer la lista de clientes por vendedor ");
					response.setCodigoRespuesta(listaClientesxVendedor.getCodigoRespuesta());
					response.setMensajeRespuesta(listaClientesxVendedor.getMensajeRespuesta());
					return response;
				}
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo+ "Hubo un error al listar " + e);
				response.setCodigoRespuesta(ConstModAdministracion.MANT_LISTAR_COD_IDT);
				response.setMensajeRespuesta(ConstModAdministracion.MANT_LISTAR_MSJ_IDT.replace("msj", mensajeTransaccionMetodo));
				return response;
			}
		//obligamos a deshabilitar el filtro de codigoLocal simple, ya que haria comflicto con la consulta in de multiples codigoLocal
			filtroOpciones.setIdLocalCliente(0);
		}
		
		List<ProyeccionClienteEntity> listaProyeccionCliente = null;
		try{
			FiltrosSQLBean filtroSQL = new FiltrosSQLBean();
			List<Object> valores = new ArrayList<>();
			List<FiltrosBean> filtro = new ArrayList<FiltrosBean>();
//			se deshabilito este filtro ya que el codigo de local es unico y no es necesario enviarle el idCliente
//			if(filtroOpciones.getIdCliente() > 0){
//				FiltrosBean listaCliente = new FiltrosBean();
//				List<String> campoCliente = new ArrayList<String>();
//				campoCliente.add("pc.cliente_id");
//				listaCliente.setCampos(campoCliente);
//				listaCliente.setOperador("=");
//				filtro.add(listaCliente);
//				valores.add(filtroOpciones.getIdCliente());
//			}
			
			if(filtroOpciones.getIdLocalCliente() > 0){
				FiltrosBean listaLocal = new FiltrosBean();
				List<String> campoLocal = new ArrayList<String>();
				campoLocal.add("pc.cliente_local_id");
				listaLocal.setCampos(campoLocal);
				listaLocal.setOperador("=");
				filtro.add(listaLocal);
				valores.add(filtroOpciones.getIdLocalCliente());
			}
			if(filtroOpciones.getIdZona() > 0){
				FiltrosBean listaZona = new FiltrosBean();
				List<String> campoZona = new ArrayList<String>();
				campoZona.add("cl.zona_id");
				listaZona.setCampos(campoZona);
				listaZona.setOperador("=");
				filtro.add(listaZona);
				valores.add(filtroOpciones.getIdZona());
			}
			if(filtroOpciones.getIdCanal() > 0){
				FiltrosBean listaCanal = new FiltrosBean();
				List<String> campoCanal = new ArrayList<String>();
				campoCanal.add("c.categoria_cliente_id");
				listaCanal.setCampos(campoCanal);
				listaCanal.setOperador("=");
				filtro.add(listaCanal);
				valores.add(filtroOpciones.getIdCanal());
			}
			if(filtroOpciones.getIdFFVV() > 0){
				FiltrosBean listaLocal = new FiltrosBean();
				List<String> campoLocal = new ArrayList<String>();
				campoLocal.add("pc.cliente_local_id");
				listaLocal.setCampos(campoLocal);
				listaLocal.setOperador("in");
				listaLocal.setNumeroValores(listaClientesxVendedor.getListaVendedorCliente().size());
				filtro.add(listaLocal);
				
				for(VendedorClienteBean ls : listaClientesxVendedor.getListaVendedorCliente()){
					valores.add(ls.getClienteLocalesId());
				}
			}
			if(filtroOpciones.getIdPeriodo() > 0){
				FiltrosBean listaPeriodo = new FiltrosBean();
				List<String> campoPeriodo = new ArrayList<String>();
				campoPeriodo.add("pc.periodo_id");
				listaPeriodo.setCampos(campoPeriodo);
				listaPeriodo.setOperador("=");
				filtro.add(listaPeriodo);
				valores.add(filtroOpciones.getIdPeriodo());
			}
			filtroSQL.setListaFiltros(filtro);
			filtroSQL.setListaValores(valores);
			listaProyeccionCliente = mantProyeccionClienteDao.listaProyeccionClientes(filtroSQL);
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al listar de  BD " + e);
			response.setCodigoRespuesta(ConstProyeccion.PROYECCION_LISTAR_COD_IDT);
			response.setMensajeRespuesta(ConstProyeccion.PROYECCION_LISTAR_MSJ_IDT);
			return response;
		}
		
		if(listaProyeccionCliente.size() > 0){
			List<ListaProyeccionClienteBean> listaCliente = new ArrayList<ListaProyeccionClienteBean>();
			BigDecimal totalProyetado = BigDecimal.ZERO;
			for(ProyeccionClienteEntity ls : listaProyeccionCliente){
				ListaProyeccionClienteBean bean = new ListaProyeccionClienteBean();
				bean.setClienteId(ls.getCliente_id());
				bean.setClienteLocalId(ls.getCliente_local_id());
				bean.setCodigoBanda(validaciones.validarCamposString(ls.getCodigo_banda()));
				bean.setId(ls.getId());
				bean.setMontoProyectada(ls.getMonto_proyectada());
				bean.setPeriodoId(ls.getPeriodo_id());
				bean.setCodLocal(validaciones.validarCamposString(ls.getCod_local()));
				bean.setNumDoc(validaciones.validarCamposString(ls.getNum_doc()));
				bean.setTipoIdentificacionId(ls.getTipo_identificacion_id());
				bean.setRazonSocial(validaciones.validarCamposString(ls.getRazon_social()));
				bean.setNombre(validaciones.validarCamposString(ls.getNombre()));
				bean.setApellido(validaciones.validarCamposString(ls.getApellido()));
				bean.setZonaId(ls.getZona_id());
				bean.setCanalId(ls.getCanal_id());
				totalProyetado =totalProyetado.add(ls.getMonto_proyectada());
				if(ls.getTipo_identificacion_id() == 1){
					bean.setNombreAmostrar(validaciones.validarCamposString(ls.getRazon_social()));
				}else{
					bean.setNombreAmostrar(validaciones.validarCamposString(ls.getApellido()) + " " + validaciones.validarCamposString(ls.getNombre()));
				}
				listaCliente.add(bean);
			}
			response.setIdTransaccion(codTransaccion);
			response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
			response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			response.setListaProyeccionCliente(listaCliente);
			response.setMontoTotalProyectado(totalProyetado);
		}else{
			response.setIdTransaccion(codTransaccion);
			response.setCodigoRespuesta(ConstProyeccion.PROYECCION_LISTAR_COD_IDF);
			response.setMensajeRespuesta(ConstProyeccion.PROYECCION_LISTAR_MSJ_IDF);
		}
		
		return response;
	}

	@Override
	public GenericGuardarResponse nuevaProyeccionCLiente(String codTransaccion,ListaProyeccionClienteBean request) {
		String mensajeTransaccionMetodo = "[nuevaProyeccionCLiente idTx=" + codTransaccion + "] - ";
		
		GenericGuardarResponse response = new GenericGuardarResponse();
		
		try{
			ProyeccionClienteResponse req = new ProyeccionClienteResponse();
			req.setClienteId(request.getClienteId());
			req.setClienteLocalId(request.getClienteLocalId());
			req.setCodigoBanda(validaciones.validarCamposString(request.getCodigoBanda()));
			req.setMontoProyectado(request.getMontoProyectada());
			req.setPeriodoId(request.getPeriodoId());
			 
			GenericResponseEntity nuevaProy = mantProyeccionClienteDao.guardarProyeccionCliente(req);
			
			if(nuevaProy.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setIdTransaccion(codTransaccion);
				response.setCodigoSaved(validaciones.validarCamposString(nuevaProy.getCodigo()));
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(String.valueOf(nuevaProy.getCod_error()));
				response.setMensajeRespuesta(nuevaProy.getMsj_error());
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar la Proyeccion en BD " + e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_NUEVO_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_NUEVO_MSJ_IDT);
		}
		
		return response;
	}

	@Override
	public GenericResponse editarProyeccionCLiente(String codTransaccion,
			ListaProyeccionClienteBean request) {
		String mensajeTransaccionMetodo = "[editarProyeccionCLiente idTx=" + codTransaccion + "] - ";
		
		GenericResponse response = new GenericResponse();
		
		try{
			ProyeccionClienteResponse req = new ProyeccionClienteResponse();
			req.setId(request.getId());
			req.setClienteId(request.getClienteId());
			req.setClienteLocalId(request.getClienteLocalId());
			req.setCodigoBanda(validaciones.validarCamposString(request.getCodigoBanda()));
			req.setMontoProyectado(request.getMontoProyectada());
			req.setPeriodoId(request.getPeriodoId());
			 
			GenericEntity nuevaProy = mantProyeccionClienteDao.actualizarProyeccionCliente(req);
			
			if(nuevaProy.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setIdTransaccion(codTransaccion);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(String.valueOf(nuevaProy.getCod_error()));
				response.setMensajeRespuesta(nuevaProy.getMsj_error());
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar la Proyeccion en BD " + e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_NUEVO_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_NUEVO_MSJ_IDT);
		}
		
		return response;
	}

	@Override
	public GenericResponse deleteProyeccionCLiente(String codTransaccion,
			int codProyeccion) {
		String mensajeTransaccionMetodo = "[deleteProyeccionCLiente idTx=" + codTransaccion + "] - ";
		
		GenericResponse response = new GenericResponse();
		
		try{
			 
			GenericEntity nuevaProy = mantProyeccionClienteDao.eliminarProyeccionCliente(codProyeccion);
			
			if(nuevaProy.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setIdTransaccion(codTransaccion);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(String.valueOf(nuevaProy.getCod_error()));
				response.setMensajeRespuesta(nuevaProy.getMsj_error());
			}
			
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al registrar la Proyeccion en BD " + e);
			response.setCodigoRespuesta(ConstModAdministracion.MANT_NUEVO_COD_IDT);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_NUEVO_MSJ_IDT);
		}
		
		return response;
	}

	@Override
	public ListaProyCanalMarcasResponse mostrarProyClienteMarcas(
			String codTransaccion, FiltroProyClienteBean filtrosSQL) {
		String mensajeTransaccionMetodo = "[mostrarProyCanalMarcas idTx=" + codTransaccion + "] - ";
		ListaProyCanalMarcasResponse response = new ListaProyCanalMarcasResponse();
		List<MarcaEntity> listaMarcas = null;
		try{
			FiltrosSQLBean filtroSQL = new FiltrosSQLBean();
			List<Object> valores = new ArrayList<>();
			List<FiltrosBean> filtro = new ArrayList<FiltrosBean>();
			FiltrosBean listaPeriodo = new FiltrosBean();
			List<String> campoPeriodo = new ArrayList<String>();
			campoPeriodo.add("active");
			listaPeriodo.setCampos(campoPeriodo);
			listaPeriodo.setOperador("=");
			filtro.add(listaPeriodo);
			valores.add(true);
			filtroSQL.setListaFiltros(filtro);
			filtroSQL.setListaValores(valores);
			//1.- Obtenemos la lista de marcas de productos
			listaMarcas =mantenimientoMarcaDao.listaMarcas(filtroSQL);
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo+ "Hubo un error al listar marcas de  BD " + e);
			response.setCodigoRespuesta(ConstProyeccion.PROYECCION_LISTAR_COD_IDT);
			response.setMensajeRespuesta(ConstProyeccion.PROYECCION_LISTAR_MSJ_IDT);
			return response;
		}
		ListaProyeccionClienteDetalleResponse listaDetalle = null;
		try{
			FiltroProyClienteBean filtroOpciones = new FiltroProyClienteBean();
			filtroOpciones.setIdCliente(filtrosSQL.getIdCliente());
			filtroOpciones.setIdLocalCliente(filtrosSQL.getIdLocalCliente());
			filtroOpciones.setIdPeriodo(filtrosSQL.getIdPeriodo());
			
			listaDetalle = mantProyeccionClienteDetalleService.mostrarProyeccionClienteDetalle(codTransaccion, filtroOpciones);
			if(!listaDetalle.getCodigoRespuesta().equalsIgnoreCase(ConstantesInternasSistema.CODIGO_EXITO)){
				System.out.println(mensajeTransaccionMetodo+ "No se encontro detalle de proyeccion del cliente");
				response.setCodigoRespuesta(listaDetalle.getCodigoRespuesta());
				response.setMensajeRespuesta(listaDetalle.getMensajeRespuesta());
				return response;
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo+ "Hubo un error al listar FFVV de  BD " + e);
			response.setCodigoRespuesta(ConstProyeccion.PROYECCION_LISTAR_COD_IDT);
			response.setMensajeRespuesta(ConstProyeccion.PROYECCION_LISTAR_MSJ_IDT);
			return response;
		}
		
		List<ProyeccionGeneralMarcasBean> listaProyeccionFfvvMarcas = new ArrayList<ProyeccionGeneralMarcasBean>();
		for(MarcaEntity marca : listaMarcas){
			ProyeccionGeneralMarcasBean bean = new ProyeccionGeneralMarcasBean();
			bean.setIdMarca(marca.getId());
			bean.setMarca(validaciones.validarCamposString(marca.getMarca()));
			BigDecimal totalMarca = BigDecimal.ZERO;
				try{
					for(ListaProyeccionClienteDetalleBean ls : listaDetalle.getListaClienteDetalle()){
						if(marca.getId()==ls.getMarcaId()){
							totalMarca = totalMarca.add(ls.getCantidadProyectada().multiply(ls.getPrecioPromedio()));
						}
					}
				}catch(Exception e){
					System.out.println("Error al obtener monto " + e);
				}
			bean.setMontoTotal(totalMarca);
			if(totalMarca.compareTo(BigDecimal.ZERO) > 0){
				listaProyeccionFfvvMarcas.add(bean);
			}
		}
		
		if (listaProyeccionFfvvMarcas.size() > 0) {
			response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
			response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			response.setListaProyeccionCanalMarcas(listaProyeccionFfvvMarcas);;
		} else {
			System.out.println("No se encontro Datos");
			response.setCodigoRespuesta(ConstModAdministracion.MANT_ELIMINAR_COD_IDF);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_ELIMINAR_MSJ_IDF.replace("msj", mensajeTransaccionMetodo));
		}
		return response;
	}

	@Override
	public ListaProyCanalCategoriaResponse mostrarProyClienteCategoria(
			String codTransaccion, FiltroProyClienteBean filtrosSQL) {
		String mensajeTransaccionMetodo = "[mostrarProyCanalCategoria idTx=" + codTransaccion + "] - ";
		ListaProyCanalCategoriaResponse response = new ListaProyCanalCategoriaResponse();
		
		List<CategoriaProductoEntity> listaCategoriaProd = null;
		try{
			//1.- obtenemos la lista de categoria de productos
			listaCategoriaProd = mantCategoriaProductoDao.listarCategoriasProd(null);
			this.listaHijosCategoriaProd = listaCategoriaProd;
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error al lista de categorias productos de  BD " + e);
			response.setCodigoRespuesta(ConstProyeccion.PROYECCION_LISTAR_COD_IDT);
			response.setMensajeRespuesta(ConstProyeccion.PROYECCION_LISTAR_MSJ_IDT);
			return response;
		}
		
		ListaProyeccionClienteDetalleResponse listaDetalle = null;
		try{
			FiltroProyClienteBean filtroOpciones = new FiltroProyClienteBean();
			filtroOpciones.setIdCliente(filtrosSQL.getIdCliente());
			filtroOpciones.setIdLocalCliente(filtrosSQL.getIdLocalCliente());
			filtroOpciones.setIdPeriodo(filtrosSQL.getIdPeriodo());
			//2.- obtenemos el detalle de la proyeccion del cliente
			listaDetalle = mantProyeccionClienteDetalleService.mostrarProyeccionClienteDetalle(codTransaccion, filtroOpciones);
			if(!listaDetalle.getCodigoRespuesta().equalsIgnoreCase(ConstantesInternasSistema.CODIGO_EXITO)){
				System.out.println(mensajeTransaccionMetodo+ "No se encontro detalle de proyeccion del cliente");
				response.setCodigoRespuesta(listaDetalle.getCodigoRespuesta());
				response.setMensajeRespuesta(listaDetalle.getMensajeRespuesta());
				return response;
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo+ "Hubo un error al listar FFVV de  BD " + e);
			response.setCodigoRespuesta(ConstProyeccion.PROYECCION_LISTAR_COD_IDT);
			response.setMensajeRespuesta(ConstProyeccion.PROYECCION_LISTAR_MSJ_IDT);
			return response;
		}
		List<ProyGeneralCategoriaBean> listaCategoriaProy = new ArrayList<ProyGeneralCategoriaBean>();
		for(CategoriaProductoEntity categoria : listaCategoriaProd){
			ProyGeneralCategoriaBean bean = new ProyGeneralCategoriaBean();
			bean.setId(categoria.getId());
			bean.setCategoria(categoria.getNombre());
			bean.setIdPadre(categoria.getPadre_id());
			
			hijos = new ArrayList<CategoriaProductoEntity>();
			//agregamos al padre
			hijos.add(categoria);
			//buscamos sus hijos
			capturarHijos(categoria.getId());
			//buscamos los montos de todos sus hijos
			BigDecimal total = BigDecimal.ZERO;
			try{
				for(CategoriaProductoEntity h :hijos){
					for(ListaProyeccionClienteDetalleBean proy : listaDetalle.getListaClienteDetalle()){
						if(h.getId() == proy.getCategoriaProductoId()){
							total =total.add(proy.getPrecioPromedio().multiply(proy.getCantidadProyectada()));
						}
					}
				}
			}catch(Exception e){
				total = BigDecimal.ZERO;
			}
			
			bean.setMontoTotal(total);
			
			if(total.compareTo(BigDecimal.ZERO) > 0){
				listaCategoriaProy.add(bean);
			}
		}

		if (listaCategoriaProy.size() > 0) {
			response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
			response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			response.setListaProyCanalCategoria(listaCategoriaProy);
		} else {
			response.setCodigoRespuesta(ConstModAdministracion.MANT_ELIMINAR_COD_IDF);
			response.setMensajeRespuesta(ConstModAdministracion.MANT_ELIMINAR_MSJ_IDF.replace("msj", mensajeTransaccionMetodo));
		}
		return response;
	}
	public void capturarHijos(int idPadre){
		for(CategoriaProductoEntity hijo :listaHijosCategoriaProd){
			if(idPadre == hijo.getPadre_id()){
				hijos.add(hijo);
				capturarHijos(hijo.getId());
			}
		}
	}

}
